package pers.linkong.asr.demo;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import pers.linkong.asr.domain.VRBean;
import pers.linkong.asr.domain.VRContainerBean;
import pers.linkong.asr.domain.VRDateBean;
import pers.linkong.asr.service.VisualService;
import pers.linkong.asr.util.ResultInfo;
import pers.linkong.asr.util.StringKit;
import pers.linkong.asr.util.TimeKit;

public class VisualR {
	//指向Spring容器的变量
	private static ApplicationContext ctx = null;

	// 静态代码块，在类被初始化的时候执行，比如说第一次引用
	// 类的静态变量，或者创建类的第一个实例的时候
	static {
		// 在类路径下寻找spring主配置文件，相对于类的根路径，启动spring容器
		ctx = new ClassPathXmlApplicationContext(
				"classpath:/mybatis-spring/mybatis-spring.xml");
	}

	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		
		
		VisualService visualService =
				(VisualService)ctx.getBean("visualService");
		int cid = 100005;
		
		List<VRContainerBean> vrcb = new ArrayList<VRContainerBean>();
		// 获取差的天数
		long daynum = visualService.getDifference(cid);
		// 循环这个差的天数次，每次天数加1
		for(int i = 0; i < daynum; i++){
			List<VRDateBean> visualBeans = visualService.getDate(cid, i+1);
			//判断当天是否有课
			if(visualBeans.size() == 0){
				//没课执行下一次循环
				continue;
			} else {
				//有课开始仔细查看课程是否符合要求
				Timestamp date = visualBeans.get(0).getDate();
				System.out.println(date + "发现了课程，子级个数:" + visualBeans.size());
				int weeknum = visualService.getWeekNum(cid, date);
				for(int j = 0; j < visualBeans.size(); j++){
					System.out.println(Thread.currentThread().getStackTrace()[1].getClassName() + "正在检查当前课程的第" + weeknum + "周");
					ResultInfo resultInfo =  StringKit.selectNumInStr(visualBeans.get(j).getWeekNumber(), weeknum);
					System.out.println(Thread.currentThread().getStackTrace()[1].getClassName() + "：" +"code:" +resultInfo.getCode() + " " + resultInfo.getMsg());
					if(resultInfo.getCode() == 1){
						List<VRBean> list = visualService.getStuRecore(visualBeans.get(j).getCidSublevel(), date);
						vrcb.add(VRContainerBean.data(TimeKit.TSFormatYMD(date), list));
					}
				}
			}
		}
		
		
		for(int i = 0 ; i < vrcb.size() ; i++) {
			List<VRBean> list = vrcb.get(i).getRecord();
			System.out.println(vrcb.get(i).getDate());
			for(int j = 0 ; j < list.size(); j++) {
				  System.out.println(list.get(j).getSid()+ ":" +list.get(j).getFlag());
			}
			
		}
		
		
	}
}
